import { create } from 'dva-core';
import { createLogger } from 'redux-logger';
import createLoading from 'dva-loading';
let app, store, dispatch;
function createApp(options) {
  const { models } = options;
  if (process.env.NODE_ENV === 'development') {
    options.onAction = [createLogger()];
  }
  app = create({
    ...options
  });
  app.use(createLoading({}));
  // @ts-ignore
  if (!global.registered) models.forEach(model => app.model(model));
  // @ts-ignore
  global.registered = true;
  app.start();
  store = app._store;
  app.getStore = () => store;
  dispatch = store.dispatch;
  app.dispatch = dispatch;
  return app;
}
export default {
  createApp,
  getDispatch() {
    return app.dispatch;
  }
};